"""
ES索引迁移工具配置文件
支持两种配置方式：
1. 完整URL方式：https://user:pass@host:port/path
2. 分离参数方式：scheme, host, port, username, password, path
"""

# 源Elasticsearch配置
SOURCE_ES_CONFIG = {
    'host': '10.120.140.21',
    'port': 9200,
    'scheme': 'http',  # 通常ES6.8不使用SSL
    'username': None,  # 如果没有认证可设为None
    'password': None,
    'path': '',  # 可选，ES的路径前缀
    'verify_certs': False,
    'timeout': 30,
    'max_retries': 3,
    'retry_on_timeout': True
}

# 目标Elasticsearch配置 (带X-PACK)
TARGET_ES_CONFIG = {
    'host': 'appconsole.lefile.cn',
    'port': 443,
    'scheme': 'https',  # 使用HTTPS协议
    'username': 'elastic',  # X-PACK用户名
    'password': 'xxx',  # X-PACK密码
    'path': 'es-rest',  # ES的路径前缀
    'verify_certs': False,  # 不验证SSL证书
    'ca_certs': None,  # CA证书路径（不需要）
    'client_cert': None,  # 客户端证书路径（不需要）
    'client_key': None,  # 客户端密钥路径（不需要）
    'timeout': 30,
    'max_retries': 3,
    'retry_on_timeout': True,
    'ssl_show_warn': False  # 关闭SSL警告
}

# 导出设置
EXPORT_CONFIG = {
    'output_dir': 'data/es_structures',  # ES结构文件存储目录
    'output_file': 'data/es_structures/exported_indices.json',  # 默认导出文件路径
    'include_system_indices': False,  # 是否包含系统索引（.kibana等）
    'excluded_indices': [  # 排除的索引模式
        '.kibana*',
        '.security*',
        '.monitoring*',
        '.watcher*',
        '.ml*'
    ]
}

# 日志配置
LOGGING_CONFIG = {
    'level': 'INFO',  # DEBUG, INFO, WARNING, ERROR
    'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    'file': 'logs/es_migration.log',  # 日志文件路径
    'max_size': 10 * 1024 * 1024,  # 单个日志文件最大大小（10MB）
    'backup_count': 5,  # 保留的历史日志文件数量
    'encoding': 'utf-8'  # 日志文件编码
}

# 迁移配置
MIGRATION_CONFIG = {
    'batch_size': 10,  # 批量处理索引数量
    'create_if_exists': False,  # 如果索引已存在是否重新创建
    'backup_existing': True,  # 是否备份已存在的索引
    'dry_run': False  # 是否只是预览不实际执行
}

# 示例：使用完整URL的配置方式
"""
SOURCE_ES_CONFIG = {
    'scheme': 'https',
    'host': 'appconsole.lefile.cn',
    'port': 443,
    'username': 'elastic',
    'password': 'xxxxxx',
    'path': 'es-rest',
    'verify_certs': False,
    'timeout': 30,
    'max_retries': 3,
    'retry_on_timeout': True
}
""" 